package com.newly.driver.sdk.device.video.service.api;


import com.newly.driver.sdk.device.video.cloud.device.*;
import com.newly.driver.sdk.device.video.constants.DeviceConstant;

/**
 * @author gjm guan
 * @date 2021/10/15 13:58
 * @desc 统一设备接口
 */
public interface IDevice {

    /**
     * 创建设备
     *
     * @param createDeviceReq 创建设备请求参数
     * @return CreateDeviceResponse.class
     */
    CreateDeviceResp createDevice(CreateDeviceReq createDeviceReq);

    /**
     * 查询设备列表
     *
     * @param queryDeviceReq 查询设备请求参数
     * @return QueryDeviceResp.class
     */
    QueryDeviceResp listDevice(QueryDeviceReq queryDeviceReq);

    /**
     * 通过id查询设备
     *
     * @param deviceId 设备id
     * @return DiscoveryDeviceResp.class
     */
    QueryDeviceResp queryDevice(String deviceId);

    /**
     * 修改设备
     *
     * @return ChangeDeviceResp.class
     */
    ModifyDeviceResp modifyDevice(ModifyDeviceReq modifyDeviceReq);

    /**
     * 删除设备
     *
     * @param removeDeviceReq 删除设备请求参数
     * @return RemoveDeviceResp.class
     */
    RemoveDeviceResp removeDevice(RemoveDeviceReq removeDeviceReq);

    /**
     * 查询设备状态
     *
     * @param deviceId 设备id
     * @return DeviceConstant.DeviceState.enum
     */
    DeviceConstant.DeviceState queryDeviceState(String deviceId);

    /**
     * 查询设备类型
     *
     * @param deviceId 设备id
     * @return DeviceConstant.DeviceType.enum
     */
    DeviceConstant.DeviceType queryDeviceType(String deviceId);



}
